
#ifndef NAVI_CORE__GLOBAL_PLANNER_HPP_
#define NAVI_CORE__GLOBAL_PLANNER_HPP_

#include <memory>
#include <string>

#include "rclcpp/rclcpp.hpp"
#include "rclcpp_lifecycle/lifecycle_node.hpp"

namespace navi_core
{

  class GlobalPlanner
  {
  public:
    using Ptr = std::shared_ptr<navi_core::GlobalPlanner>;

    /**
     * @brief Virtual destructor
     */
    virtual ~GlobalPlanner() {}

    /**
     * 纯虚函数
     */
    virtual void configure(
        const rclcpp_lifecycle::LifecycleNode::WeakPtr &) = 0;

    /**
     * @brief Method to cleanup resources.
     */
    virtual void cleanup() = 0;

    /**
     * @brief Method to active planner and any threads involved in execution.
     */
    virtual void activate() = 0;

    /**
     * @brief Method to deactive planner and any threads involved in execution.
     */
    virtual void deactivate() = 0;

    virtual void createPlan() = 0;

  };

} // namespace navi_core

#endif // NAVI_CORE__GLOBAL_PLANNER_HPP_
